######################################################
##
##  Cutscenes:
##
##  Scripts and data for the intro and outro cutscenes.
##
##  John Earnest
##
######################################################

:image desert-tiles "desertTiles.png" 8 8
:image white-text   "text.png"        8 8

:array fade-buff 1271 0

: show-transition GP @ GS @ fade-buff GP ! 0 GS ! ; ( -- GP GS )
: hide-transition GS ! GP !                       ; ( GP GS -- )

: fade-out ( -- )
	# copy grid to transition buffer
	30 for
		0 i tile-grid@
		i 41 * fade-buff +
		41 >move
	next

	# animate transition out
	show-transition
	40 for
		30 for
			19 grid-z or
			i 2 mod if j else 40 j - then i tile-grid@ !
		next
		sync
	next
	40 for sync next
	hide-transition
;

: fade-in ( -- )
	# animate transition back to game
	40 for
		30 for
			i 2 mod if j else 40 j - then i 2dup
			tile-grid@ @ >r 41 * + fade-buff + r> swap !
		next
		show-transition sync hide-transition
	next
;

######################################################
##
##  Introduction
##
######################################################

:data intro-grid
	 48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  -1 
	 48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52   0   0  52  52   0   0  52  52   0   0  52  52   0   0  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  82  99  98  99  98  99  98  99  98  99  98  99  98  99  98  99  98  82  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48   0  99  52  52  52  52  52  52  52  52  52  52  52  52  52  52  52  52  98   0  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  98  52  73  74  75  76  77  78  79  52  52  84  85  86  87  88  52  99  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48   0  99  52  89  90  91  92  93  94  95  83  52 100 101 102 103 104  52  98   0  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  98  52 105 106 107 108 109 110 111  52  52  52  52  52  52  52  52  99  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48   0  99  52  52  52  52  52  52  52  52  52  52  52  52  52  52  52  52  98   0  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  82  99  98  99  98  99  98  99  98  99  98  99  98  99  98  99  98  82  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52   0   0  52  52   0   0  52  52   0   0  52  52   0   0  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  -1 
	 48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  48  52  52  48  -1 
	 48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  -1 
	 48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  -1 
	  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  -1 
	  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  -1 
	  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  -1 
	  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1  -1 
	  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1  20   1  20  22  21  23  24   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1  -1 
	 23  21  22  23   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1  20  22  24  -1 
	  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1  -1 
	  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2  -1 
	  2   2   2   2   2   4   5   5   6   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2  -1 
	  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   4   5   5   5   6   2   2   2   2   2   2   2  -1 
	  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2  -1 
	  3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3  -1 
	  3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3  29  -1 
	 29  30   3   3  31   3   3  18  17  16  17  19  30   3   3   3   3   3   3   3  25  26  27  28   3  29  18  17  16  16  16  17  16  19  18  16  16  16  16  16  -1 
	 16  16  16  17  15  17  17  16  16  16  16  16  17  17  16  16  19  18  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  -1 
	 35  35  33  34  15  35  35  36  37  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  16  15  16  16  16  16  38  39  40  40  40  40  40  -1 
	  9  32  47  32  63  32  32  32  32  35  35  35  35  33  35  36  37  16  16  16  16  16  16  16  16  16  16  16  15  16  38  39  40  15  40  40  40  40  40  40  -1 
	 32  41  63  32  41  41  54  54  54  41   7   8  32   9  32  32  32  35  33  34  34  35  35  35  35  35  34  35  63  35  35  35  35  63  35  35  35  35  35  35  -1 
	 44  45  44  44  44  46  32  47   9  32   9  41  41  41  41  41  32  32  32  41  32  32  32  32  43  44  44  44  45  44  44  44  45  44  45  44  44  44  45  44  -1 
	 60  61  60  60  60  62  32  47  63  32  32  32  32  32   7   8  32  32  32  41  32  32   9  32  59  60  60  60  61  60  60  60  61  60  60  60  61  60  60  60  -1 
	 41  41  54  54  41  41  32  63  32  32   7   8  32  32  32  32  32  32  41  41  41  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  55  55  -1 
	 42  42  42  42  42  42  42  42  42  42  32  32  32  32  41  32  32  32  32  41  41  41  54  54  54  41  41  41  41  54  41  32  32  55  55  32  32  32  32  32  -1 
	 32  32  32  32  32  32  32  54  32  55  54  55  55  32  55  55  32  32  32  42  42  42  42  42  42  42  42  42  42  42  42  42  42  42  42  32  42  42  42  42  -1 
	 42  42  42  42  42  32  32  49  53  53  53  53  52  53  50  50  58  55  32  42  42  42  42  42  42  42  41  41  41  41  41  32  32  32  55  32  32  32  32  32  -1 
	 32  32  32  32  32  56  49  51  51  52  52  52  52  52  51  51  50  56  55  32  32  32  32  32  32  32  32  32  32  32  32  32  41  32  32  41  41  41  32  41  -1 
	  8  32   9  32  32  32  54  56  49  51  51  52  51  51  50  56  54  32  32  32  55  55  32  32  32  32  41  32  32  41  32  32  32  32  32  32  32  32  32  32  -1 
	 42  42  47  42  42  32  32  32  32  32  54  32  32  54  32  32  32  54  32  32  32  32  32  32  32  32  32  32  32  32  32  41  41  32  32  41  47  41  41   9  -1 
	  7   8  47  41  41  54  41  41  41  32  32  32  32  32  32  32  32  32  32  41  32  32  32  54  32  32  32  32  32  32  41  32  32  41  42  42  47  42  63  42  -1 
	 41  41  47  47  41  41  32  32  32  41  32  32  32  54  54  54  54  32  32  32  32  32  32  32  32  32  32  32  32   7   8  42  63  42  41   9  63   7   8   7  -1 
	 41  32  63  47  32  32  32  32  32  32  32  32  32  32  32  32  32  32  54  54  54  32  32  32  32  32  54  32  32  32  32   9  32   7   8   9   7   8   7   8  -1 
	 -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1

: intro
	intro-grid   GP !
	desert-tiles GT !
	loop sync again
;

######################################################
##
##  Finale
##
######################################################

:data finale-grid
	 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 -1 
	 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 -1 
	22 23 24  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 20 21 22 23 21 22 23 24  1  1  1  1  1  1  1  1  1  1  1  1  1 -1 
	 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 -1 
	 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  4  5 -1 
	 2  2  2  2  2  2  4  5  4  5  6  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 -1 
	17 17 16 16 19 18 17 17 16 19 30  3  3  3  3  3  3  3  3 30  3  3  3  3  3  3 29 18 19 18 17 29 18 17 17 19 30  3  3  3 -1 
	16 16 16 16 16 16 16 16 16 16 19 18 16 17 17 17 16 16 17 17 17 17 16 16 17 16 16 16 16 16 16 17 16 16 16 16 17 17 16 17 -1 
	16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 39 38 39 39 40 40 40 40 40 40 40 40 40 -1 
	16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 39 39 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -1 
	35 34 34 33 34 35 33 33 34 33 33 33 35 34 33 35 36 36 37 38 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -1 
	32 32 55 55 55 32 32 54 32 55 32 55 55 32 54 55 32 32 32 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 33 34 33 35 -1 
	54 32 32 32 32 32 55 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 55 54 32 32 32 32 55 32 32 54 32 32 32 55 32 32 54 32 -1 
	32 32 32 32 32 32 32 32 32 32 32 32 32 32 39 38 39 39 39 40 40 39 32 32 32 32 32 32 70 71 72 35 35 35 35 35 35 35 35 35 -1 
	32 32 32 32 32 32 32 32 32 39 40 40 39 40 40 40 40 40 40 40 40 40 38 70 71 72 35 35 54 32 32  7  8 47 32  9  7  8 32  9 -1 
	32 32 70 71 72 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 54 32 32 64 65 66 32 32 32 32 63  7  8 32  7  8 47 -1 
	35 35 54 32 32 32 32 32 32 32 32 32 32 55 55 55 32 32 32 32 32 32 32 32 32 32 41 41 41 41 32 32 32 32 32 32 32 32  9 63 -1 
	32 32 32 32 32 32 32 32 32 32 32 41 32 54 58 57 56 32 32 32 32 32 32 32 32 32 32 32 32 32 41 41 41 41 41 41 32 32 32  9 -1 
	32 32 32 32 41 41 41 41 41 41 32 32 54 32 56 54 32 32 32 32 32 32 32 32 32 55 56 32 54 32 32 41 41 41 41 41 41 47 32 32 -1 
	47 41 41 41 41 41 41 32 32 64 65 66 32 32 32 32 32 64 65 65 65 66 32 32 56 57 57 58 32 32 32 32 32 32 32 32 32 47 32 47 -1 
	63 32 32 32 32 32 32 32 32 55 32 32 32 32 32 32 64 65 65 65 65 65 66 32 32 54 54 32 56 32 32 64 65 65 65 66 32 63 47 63 -1 
	 8  9 47 32 32 32 32 32 56 57 56 32 32 32 64 65 11 67 68 68 68 69 10 65 66 32 32 32 32 32 32 32 32 32 32 32 32 32 63 32 -1 
	 7  8 63 32 63 32 63 32 32 54 32 32 54 64 65 11 67 52 52 52 52 52 69 10 65 66 54 55 32 32 32 32 32 32 32 32 41 41 41 41 -1 
	32  9  7  8 32  9 32 32 32 32 54 55 64 65 11 67 51 51 51 51 51 51 51 69 10 65 66 55 54 32 32 32 32 32 32 32 32 32 41 41 -1 
	47  8 32 63 32 32 32 32 32 32 32 54 32 54 54 32 54 55 55 54 54 55 54 32 54 32 54 54 32 32 32 32 32 32 32 32 32 32 32 32 -1 
	63 32  9 32 32 32 32 32 32 32 32 32 32 32 32 32 56 42 42 57 56 57 56 56 32 32 32 32 32 32 32 32 32 32 32 47 32 32 32 32 -1 
	32 63 32 47 32 32 32 32 32 32 32 32 32 32 32 32 32 32 56 42 42 42 42 32 32 32 32 32 41 32 32 32 32 32  9 63  9 32 32 32 -1 
	 8  9 41 47 41 41 32 32 32 32 32 32 32 32 32 32 32 32 32 56 41 42 42 58 42 41 32 32 32 32 32 32 32 32 32  7  8  9 32 47 -1 
	32 32 32 63 47 41 41 41 32 32 32 32 32 32 32 32 32 32 32 32 32 56 42 42 56 42 41 42 56 41 41 41 41 32 32 32 32 32 32 63 -1 
	63 41 41 41 63 32 32 32 32 32 41 41 41 32 32 32 32 32 32 32 32 32 32 56 42 58 58 42 42 42 58 41 56 32 32 63 32 63 32 32 -1 
	-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 

: finale
	finale-grid  GP !
	desert-tiles GT !
;